package com.zishuimuyu.http;

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;

/**
 * 该类继承自 AbstractHttpParams，用于处理 HTTP GET 请求的参数
 */
public class HttpGetParams extends AbstractHttpParams {

    /**
     * 重写父类的 send 方法，用于发送 HTTP GET 请求
     *
     * @param httpClient 可关闭的 HTTP 客户端，用于执行 HTTP 请求
     * @param baseUrl    请求的基础 URL
     * @return 包含响应信息的 CloseableHttpResponse 对象
     * @throws Exception 如果在构建 URI 或执行请求过程中发生异常
     */
    @Override
    protected CloseableHttpResponse send(CloseableHttpClient httpClient, String baseUrl) throws Exception {
        // 创建一个 URIBuilder 对象，用于构建包含参数的完整 URI
        URIBuilder uri = new URIBuilder(baseUrl);
        // 遍历存储参数的 Map
        for (String key : params.keySet()) {
            // 获取当前键对应的值
            String value = params.get(key);
            // 向 URIBuilder 中添加参数
            uri.addParameter(key, value);
        }
        // 创建一个 HttpGet 请求对象，使用构建好的 URI
        HttpUriRequest request = new HttpGet(uri.toString());
        // 使用传入的 HTTP 客户端执行请求，并返回响应
        return httpClient.execute(request);
    }
}
